WebSocket Opening Handshake
一往復
レスポンスを受け取ると、コネクションが確立され、双方向通信が可能になる
クライアントからHTTPリクエストを送る
例
code:request
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket ┐
Connection: upgrade ┘upgrade
Sec-WebSocket-Version: 13 ┐
Sec-WebSocket-Key: E4WSEcseoWr4csPLS2QJHA== ┘ versionの指定
Sec-WebSocket-Protocol: chat, superchat
HTTPで来たけど、「これはWebSocketだぜ」ってことをサーバーに伝える
Sec-WebSocket-Version
現時点では13固定らしい
サーバーがこのバージョンに対応してなければコネクションを切断する
Sec-WebSocket-Key
特定のクライアントとのコネクションの確立を示すために使う
ランダムな16byteの値をBase64でエンコードしたもの Sec-WebSocket-Protocol
オプション。指定しなくてもいい
どういう形式を使うかを指定する
よくわからんmrsekut.icon
それに対するレスポンス
code:response
HTTP/1.1 101 OK
Upgrade: websocket
Connection: upgrade
Sec-WebSocket-Accept: 7eQChgCtQMnVILefJAO6dK5JwPc=
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Accept
リクエストのSec-WebSocket-Keyを元にして生成する
通信確立を検証するために用いる
Sec-WebSocket-Protocol
リクエストのSec-WebSocket-Protocolから一つを選んで返す
参考